// 类型别名 可以让对象类型和联合类型多次在其他地方使用
// 对象类型别名
type Point = {
    x:number,
    y:number
}
function printPoint(point:Point){
    console.log(point.x,point.y);
}
function sumPoint(point:Point){
    console.log(point.x+point.y);
}
printPoint({x:20,y:30})
sumPoint({x:20,y:30})

// 联合别名
type ID = number | string

function printId(id:ID){
    console.log("您的id:",id);
}

//类型断言
// 设置变量获取的返回类型,更具体的类型  这个自动推断是 HTMLElement,想让myEl变得更具体需要用断言as
const myEl = document.getElementById("my-img") as HTMLImageElement

myEl.src = "图片地址"

// as const是语法,const断言告诉编译器为表达式推断出它能推断出的最窄或最特定的类型
const info = {
    url: "https://coderwhy.org/abc",
    method: "GET"
} as const  //进行字面量推理 as const是语法,const断言告诉编译器为表达式推断出它能推断出的最窄或最特定的类型

function request(url: string, method: "GET" | "POST") {
    console.log(url, method);
}
request(info.url, info.method)
